﻿/**********************************************************************
 * @file   FITKSEASubSysShellRadiationWare.h
 * @brief  SEA板子系统 辐射和波的数据参数
 * @author liuzhonghua (liuzhonghuaszch@163.com)
 * @date   2024-11-07
 *********************************************************************/
#ifndef _FITKSEASUBSYS_SHELL_RADIATIONWARE_H___
#define _FITKSEASUBSYS_SHELL_RADIATIONWARE_H___

#include "FITKAcousticsModelAPI.h"
 
namespace Acoustics
{
    class FITKAcousticsAbstractSpectra;
     /**
      * @brief  SEA板子系统 辐射和波的数据参数
      * @author liuzhonghua (liuzhonghuaszch@163.com)
      * @date   2024-11-08
      */
    class FITKAcousticsModelAPI FITKSEASubSysShellRadiationWare
    {
    public:
        /**
         * @brief Construct a new FITKSEASubSysShellRadiationWare object
         * @param[i]  是否从FE模型创建
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-08
         */
        explicit FITKSEASubSysShellRadiationWare() = default;
        /**
         * @brief Destroy the FITKSEASubSysShellRadiationWare object
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-08
         */
        virtual ~FITKSEASubSysShellRadiationWare() = default;
        /**
         * @brief    设置有效辐射面积放大倍数
         * @param[i] magnification 放大倍数
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setEffRadiationAreaMagnification(double magnification);
        /**
         * @brief    获取有效辐射面积放大倍数
         * @return   double
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        double getEffRadiationAreaMagnification();
        /**
         * @brief    设置有效辐射周长放大倍数
         * @param[i] magnification 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setEffRadiationPerimeterMagnification(double magnification);
        /**
         * @brief    获取有效辐射周长放大倍数
         * @return   double
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        double getEffRadiationPerimeterMagnification();
        /**
         * @brief    设置弯曲波在SEA解决方案的启用状态
         * @param[i] state 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setFlexureInSEAMatrixSolution(bool state);
        /**
         * @brief    获取弯曲波在SEA解决方案的启用状态
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        bool getFlexureInSEAMatrixSolution();
        /**
         * @brief    设置弯曲波对分层面板校正的启用状态
         * @param[i] state 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setFlexureCorrectionSDP(bool state);
        /**
         * @brief    获取弯曲波对分层面板校正的启用状态
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        bool getFlexureCorrectionSDP();
        /**
         * @brief    设置弯曲波对分层面板的长的放大倍数
         * @param[i] magnification 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setFlexureSDPLengthMagnification(double magnification);
        /**
         * @brief    获取弯曲波对分层面板的长的放大倍数
         * @return   double
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        double getFlexureSDPLengthMagnification();
        /**
         * @brief    设置弯曲波对分层面板的宽的放大倍数
         * @param[i] magnification 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setFlexureSDPWidthMagnification(double magnification);
        /**
         * @brief    获取弯曲波对分层面板的宽的放大倍数
         * @return   double
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        double getFlexureSDPWidthMagnification();
        /**
         * @brief    设置弯曲波对模态密度的启用状态
         * @param[i] state 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setFlexureModelDensityState(bool state);
        /**
         * @brief    获取弯曲波对模态密度的启用状态
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        bool getFlexureModelDensityState();
        /**
         * @brief    设置弯曲波的模态密度id
         * @param[i] id 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setFlexureModelDensityID(int id);
        /**
         * @brief    获取弯曲波的模态密度id
         * @return   int
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        int getFlexureModelDensityID();
        /**
         * @brief    获取弯曲波的模态密度
         * @return   FITKAcousticsAbstractSpectra *
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        FITKAcousticsAbstractSpectra* getFlexureModelDensity();
        /**
         * @brief    设置拉伸波在SEA解决方案的启用状态
         * @param[i] state 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setExtensionInSEAMatrixSolution(bool state);
        /**
         * @brief    获取拉伸波在SEA解决方案的启用状态
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        bool getExtensionInSEAMatrixSolution();
        /**
         * @brief    设置拉伸波对模态密度的启用状态
         * @param[i] state 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setExtensionModelDensityState(bool state);
        /**
         * @brief    获取拉伸波对模态密度的启用状态
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        bool getExtensionModelDensityState();
        /**
         * @brief    设置拉伸波的模态密度id
         * @param[i] id 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setExtensionModelDensityID(int id);
        /**
         * @brief    获取拉伸波的模态密度id
         * @return   int
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        int getExtensionModelDensityID();
        /**
         * @brief    获取拉伸波的模态密度
         * @return   FITKAcousticsAbstractSpectra *
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        FITKAcousticsAbstractSpectra* getExtensionModelDensity();
        /**
         * @brief    设置剪切波在SEA解决方案的启用状态
         * @param[i] state 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setShearInSEAMatrixSolution(bool state);
        /**
         * @brief    获取剪切波在SEA解决方案的启用状态
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        bool getShearInSEAMatrixSolution();
        /**
         * @brief    设置剪切波对模态密度的启用状态
         * @param[i] state 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setShearModelDensityState(bool state);
        /**
         * @brief    获取剪切波对模态密度的启用状态
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        bool getShearModelDensityState();
        /**
         * @brief    设置剪切波的模态密度
         * @param[i] id 
         * @return   void
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        void setShearModelDensityID(int id);
        /**
         * @brief    获取剪切波的模态密度id
         * @return   int
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        int getShearModelDensityID();
        /**
         * @brief    获取剪切波的模态密度
         * @return   FITKAcousticsAbstractSpectra *
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-11-07
         */
        FITKAcousticsAbstractSpectra* getShearModelDensity();

    protected:
        /**
         * @brief  有效辐射面积放大倍数
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        double _effRadiationAreaMagnification{ 1 };
        /**
         * @brief  有效辐射周长放大倍数
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        double _effRadiationPerimeterMagnification{ 1 };
        /**
         * @brief  SEA解决方案是否包含弯曲波
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        bool _flexureInSEAMatrixSolution{ true };
        /**
         * @brief  弯曲波对分层面板校正的启用状态
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        bool _flexureCorrectionSDP{ true };
        /**
         * @brief  弯曲波对分层面板的长的放大倍数
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        double _flexureSDPLengthMagnification{ 1 };
        /**
         * @brief  弯曲波对分层面板的宽的放大倍数
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        double _flexureSDPWidthMagnification{ 1 };
        /**
         * @brief  弯曲波对模态密度的启用状态
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        bool _flexureModelDensityState{ false };
        /**
         * @brief  弯曲波的模态密度
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        int _flexureModelDensityID{ -1 };
        /**
         * @brief  SEA解决方案是否包含拉伸波
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        bool _extensionInSEAMatrixSolution{ true };
        /**
         * @brief  拉伸波对模态密度的启用状态
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        bool _extensionModelDensityState{ false };
        /**
         * @brief  拉伸波的模态密度
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        int _extensionModelDensityID{ -1 };
        /**
         * @brief  SEA解决方案是否包含剪切波
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        bool _shearInSEAMatrixSolution{ true };
        /**
         * @brief  剪切波对模态密度的启用状态
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        bool _shearModelDensityState{ false };
        /**
         * @brief  剪切波的模态密度
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-11-07
         */
        int _shearModelDensityID{ -1 };
    };

}


#endif
